/*
 * @Author: 袁文帅
 * @Date: 2021-02-22 18:43:55
 * @LastEditTime: 2021-02-23 10:24:40
 * @LastEditors: last update your name
 * @人生亦有命，安能行叹复坐愁
 */
import React, { Component } from 'react'
import context from "../utils/context"

export default function (fun,fun_2) {
    return function (WrapComponent) {
        return class connect extends Component {
            render() {
                return (
                    // 接收传递下来的数据
                    <context.Consumer>
                        {
                            // 将数据和方法结构出来
                            ({store,dispatch}) => {
                                // 接收指定数据  并且将这些数据映射在组件的props上
                                let res= fun(store)
                                // 判断调用者是否想抽离使用dispatch
                                let isDis = fun_2 ? null :dispatch
                                let result = {}
                                // 接收所有dispath  并且映射在组件上
                                fun_2 && (result= fun_2(dispatch))
                                return <div><WrapComponent dispatch={isDis} {...result} {...res} {...this.props}></WrapComponent></div>
                            }
                        }
                    </context.Consumer>
                )
            }
        }
    }
}
